#ifndef _dbos_demo_phase_Base_h_
#define _dbos_demo_phase_Base_h_

#include <nemesis.RuntimeException.h>

#include <nemesis.dbms.DatabaseException.h>

namespace nemesis {
   namespace dbms {
      class Connection;
   }
}

namespace dbos_demo {

namespace phase {

using namespace nemesis;

class Base {
public:
   void apply (dbms::Connection&) throw ();

protected:
   explicit Base (const char* name) : a_name (name) {;}

private:
   const char* a_name;

   virtual void do_comment () const throw () = 0;
   virtual void do_apply (dbms::Connection&) throw (RuntimeException, dbms::DatabaseException) = 0;
};

}

}

#endif 
